{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ResnetTrick_s192bs32_e80\n",
    "\n",
    "> size 192 bs 32 80 epochs runs."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# setup and imports"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# pip install git+https://github.com/ayasyrev/model_constructor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# pip install git+https://github.com/kornia/kornia"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from kornia.contrib import MaxBlurPool2d"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from fastai.basic_train import *\n",
    "from fastai.vision import *\n",
    "from fastai.script import *\n",
    "from model_constructor.net import *\n",
    "from model_constructor.layers import SimpleSelfAttention, ConvLayer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Ranger deep learning optimizer - RAdam + Lookahead combined.\n",
    "  #https://github.com/lessw2020/Ranger-Deep-Learning-Optimizer\n",
    "\n",
    "  #Ranger has now been used to capture 12 records on the FastAI leaderboard.\n",
    "\n",
    "  #This version = 9.3.19  \n",
    "\n",
    "  #Credits:\n",
    "  #RAdam -->  https://github.com/LiyuanLucasLiu/RAdam\n",
    "  #Lookahead --> rewritten by lessw2020, but big thanks to Github @LonePatient and @RWightman for ideas from their code.\n",
    "  #Lookahead paper --> MZhang,G Hinton  https://arxiv.org/abs/1907.08610\n",
    "\n",
    "  #summary of changes: \n",
    "  #full code integration with all updates at param level instead of group, moves slow weights into state dict (from generic weights), \n",
    "  #supports group learning rates (thanks @SHolderbach), fixes sporadic load from saved model issues.\n",
    "  #changes 8/31/19 - fix references to *self*.N_sma_threshold; \n",
    "                  #changed eps to 1e-5 as better default than 1e-8.\n",
    "\n",
    "import math\n",
    "import torch\n",
    "from torch.optim.optimizer import Optimizer, required\n",
    "import itertools as it"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# utils"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "class Mish(nn.Module):\n",
    "    def __init__(self):\n",
    "        super().__init__()\n",
    "        print(\"Mish activation loaded...\")\n",
    "\n",
    "    def forward(self, x):  \n",
    "        #save 1 second per epoch with no x= x*() and then return x...just inline it.\n",
    "        return x *( torch.tanh(F.softplus(x))) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "class Ranger(Optimizer):\n",
    "\n",
    "    def __init__(self, params, lr=1e-3, alpha=0.5, k=6, N_sma_threshhold=5, betas=(.95,0.999), eps=1e-5, weight_decay=0):\n",
    "        #parameter checks\n",
    "        if not 0.0 <= alpha <= 1.0:\n",
    "            raise ValueError(f'Invalid slow update rate: {alpha}')\n",
    "        if not 1 <= k:\n",
    "            raise ValueError(f'Invalid lookahead steps: {k}')\n",
    "        if not lr > 0:\n",
    "            raise ValueError(f'Invalid Learning Rate: {lr}')\n",
    "        if not eps > 0:\n",
    "            raise ValueError(f'Invalid eps: {eps}')\n",
    "\n",
    "        #parameter comments:\n",
    "        # beta1 (momentum) of .95 seems to work better than .90...\n",
    "        #N_sma_threshold of 5 seems better in testing than 4.\n",
    "        #In both cases, worth testing on your dataset (.90 vs .95, 4 vs 5) to make sure which works best for you.\n",
    "\n",
    "        #prep defaults and init torch.optim base\n",
    "        defaults = dict(lr=lr, alpha=alpha, k=k, step_counter=0, betas=betas, N_sma_threshhold=N_sma_threshhold, eps=eps, weight_decay=weight_decay)\n",
    "        super().__init__(params,defaults)\n",
    "\n",
    "        #adjustable threshold\n",
    "        self.N_sma_threshhold = N_sma_threshhold\n",
    "\n",
    "        #now we can get to work...\n",
    "        #removed as we now use step from RAdam...no need for duplicate step counting\n",
    "        #for group in self.param_groups:\n",
    "        #    group[\"step_counter\"] = 0\n",
    "            #print(\"group step counter init\")\n",
    "\n",
    "        #look ahead params\n",
    "        self.alpha = alpha\n",
    "        self.k = k \n",
    "\n",
    "        #radam buffer for state\n",
    "        self.radam_buffer = [[None,None,None] for ind in range(10)]\n",
    "\n",
    "        #self.first_run_check=0\n",
    "\n",
    "        #lookahead weights\n",
    "        #9/2/19 - lookahead param tensors have been moved to state storage.  \n",
    "        #This should resolve issues with load/save where weights were left in GPU memory from first load, slowing down future runs.\n",
    "\n",
    "        #self.slow_weights = [[p.clone().detach() for p in group['params']]\n",
    "        #                     for group in self.param_groups]\n",
    "\n",
    "        #don't use grad for lookahead weights\n",
    "        #for w in it.chain(*self.slow_weights):\n",
    "        #    w.requires_grad = False\n",
    "\n",
    "    def __setstate__(self, state):\n",
    "        print(\"set state called\")\n",
    "        super(Ranger, self).__setstate__(state)\n",
    "\n",
    "\n",
    "    def step(self, closure=None):\n",
    "        loss = None\n",
    "        #note - below is commented out b/c I have other work that passes back the loss as a float, and thus not a callable closure.  \n",
    "        #Uncomment if you need to use the actual closure...\n",
    "\n",
    "        #if closure is not None:\n",
    "            #loss = closure()\n",
    "\n",
    "        #Evaluate averages and grad, update param tensors\n",
    "        for group in self.param_groups:\n",
    "\n",
    "            for p in group['params']:\n",
    "                if p.grad is None:\n",
    "                    continue\n",
    "                grad = p.grad.data.float()\n",
    "                if grad.is_sparse:\n",
    "                    raise RuntimeError('Ranger optimizer does not support sparse gradients')\n",
    "\n",
    "                p_data_fp32 = p.data.float()\n",
    "\n",
    "                state = self.state[p]  #get state dict for this param\n",
    "\n",
    "                if len(state) == 0:   #if first time to run...init dictionary with our desired entries\n",
    "                    #if self.first_run_check==0:\n",
    "                        #self.first_run_check=1\n",
    "                        #print(\"Initializing slow buffer...should not see this at load from saved model!\")\n",
    "                    state['step'] = 0\n",
    "                    state['exp_avg'] = torch.zeros_like(p_data_fp32)\n",
    "                    state['exp_avg_sq'] = torch.zeros_like(p_data_fp32)\n",
    "\n",
    "                    #look ahead weight storage now in state dict \n",
    "                    state['slow_buffer'] = torch.empty_like(p.data)\n",
    "                    state['slow_buffer'].copy_(p.data)\n",
    "\n",
    "                else:\n",
    "                    state['exp_avg'] = state['exp_avg'].type_as(p_data_fp32)\n",
    "                    state['exp_avg_sq'] = state['exp_avg_sq'].type_as(p_data_fp32)\n",
    "\n",
    "                #begin computations \n",
    "                exp_avg, exp_avg_sq = state['exp_avg'], state['exp_avg_sq']\n",
    "                beta1, beta2 = group['betas']\n",
    "\n",
    "                #compute variance mov avg\n",
    "                exp_avg_sq.mul_(beta2).addcmul_(1 - beta2, grad, grad)\n",
    "                #compute mean moving avg\n",
    "                exp_avg.mul_(beta1).add_(1 - beta1, grad)\n",
    "\n",
    "                state['step'] += 1\n",
    "\n",
    "\n",
    "                buffered = self.radam_buffer[int(state['step'] % 10)]\n",
    "                if state['step'] == buffered[0]:\n",
    "                    N_sma, step_size = buffered[1], buffered[2]\n",
    "                else:\n",
    "                    buffered[0] = state['step']\n",
    "                    beta2_t = beta2 ** state['step']\n",
    "                    N_sma_max = 2 / (1 - beta2) - 1\n",
    "                    N_sma = N_sma_max - 2 * state['step'] * beta2_t / (1 - beta2_t)\n",
    "                    buffered[1] = N_sma\n",
    "                    if N_sma > self.N_sma_threshhold:\n",
    "                        step_size = math.sqrt((1 - beta2_t) * (N_sma - 4) / (N_sma_max - 4) * (N_sma - 2) / N_sma * N_sma_max / (N_sma_max - 2)) / (1 - beta1 ** state['step'])\n",
    "                    else:\n",
    "                        step_size = 1.0 / (1 - beta1 ** state['step'])\n",
    "                    buffered[2] = step_size\n",
    "\n",
    "                if group['weight_decay'] != 0:\n",
    "                    p_data_fp32.add_(-group['weight_decay'] * group['lr'], p_data_fp32)\n",
    "\n",
    "                if N_sma > self.N_sma_threshhold:\n",
    "                    denom = exp_avg_sq.sqrt().add_(group['eps'])\n",
    "                    p_data_fp32.addcdiv_(-step_size * group['lr'], exp_avg, denom)\n",
    "                else:\n",
    "                    p_data_fp32.add_(-step_size * group['lr'], exp_avg)\n",
    "\n",
    "                p.data.copy_(p_data_fp32)\n",
    "\n",
    "                #integrated look ahead...\n",
    "                #we do it at the param level instead of group level\n",
    "                if state['step'] % group['k'] == 0:\n",
    "                    slow_p = state['slow_buffer'] #get access to slow param tensor\n",
    "                    slow_p.add_(self.alpha, p.data - slow_p)  #(fast weights - slow weights) * alpha\n",
    "                    p.data.copy_(slow_p)  #copy interpolated weights to RAdam param tensor\n",
    "\n",
    "        return loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_data(size=128, woof=1, bs=64, workers=None, **kwargs):\n",
    "    if woof:\n",
    "        path = URLs.IMAGEWOOF    # if woof \n",
    "    else:\n",
    "        path = URLs.IMAGENETTE\n",
    "    path = untar_data(path)\n",
    "    print('data path  ', path)\n",
    "    n_gpus = num_distrib() or 1\n",
    "    if workers is None: workers = min(8, num_cpus()//n_gpus)\n",
    "    return (ImageList.from_folder(path).split_by_folder(valid='val')\n",
    "            .label_from_folder().transform(([flip_lr(p=0.5)], []), size=size)\n",
    "            .databunch(bs=bs, num_workers=workers)\n",
    "            .presize(size, scale=(0.35,1))\n",
    "            .normalize(imagenet_stats))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_learn(\n",
    "        gpu:Param(\"GPU to run on\", str)=None,\n",
    "        woof: Param(\"Use imagewoof (otherwise imagenette)\", int)=1,\n",
    "        size: Param(\"Size (px: 128,192,224)\", int)=128,\n",
    "        alpha: Param(\"Alpha\", float)=0.99, \n",
    "        mom: Param(\"Momentum\", float)=0.95, #? 0.9\n",
    "        eps: Param(\"epsilon\", float)=1e-6,\n",
    "        bs: Param(\"Batch size\", int)=64,\n",
    "        mixup: Param(\"Mixup\", float)=0.,\n",
    "        opt: Param(\"Optimizer (adam,rms,sgd)\", str)='ranger',\n",
    "        sa: Param(\"Self-attention\", int)=0,\n",
    "        sym: Param(\"Symmetry for self-attention\", int)=0,\n",
    "        model: Param('model as partial', callable) = xresnet50\n",
    "        ):\n",
    " \n",
    "    if   opt=='adam' : opt_func = partial(optim.Adam, betas=(mom,alpha), eps=eps)\n",
    "    elif opt=='ranger'  : opt_func = partial(Ranger,  betas=(mom,alpha), eps=eps)\n",
    "    data = get_data(size, woof, bs)\n",
    "    learn = (Learner(data, model(), wd=1e-2, opt_func=opt_func,\n",
    "             metrics=[accuracy,top_k_accuracy],\n",
    "             bn_wd=False, true_wd=True,\n",
    "             loss_func = LabelSmoothingCrossEntropy(),))\n",
    "    print('Learn path', learn.path)\n",
    "    if mixup: learn = learn.mixup(alpha=mixup)\n",
    "    return learn"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ResBlock"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "class NewResBlock(Module):\n",
    "    def __init__(self, expansion, ni, nh, stride=1, \n",
    "                 conv_layer=ConvLayer, act_fn=act_fn,\n",
    "#                  pool=nn.AvgPool2d(2, ceil_mode=True), sa=False,sym=False):\n",
    "                 pool=nn.AvgPool2d(2, ceil_mode=True), sa=False,sym=False, zero_bn=True):\n",
    "        nf,ni = nh*expansion,ni*expansion\n",
    "        self.reduce = noop if stride==1 else pool\n",
    "        layers  = [(f\"conv_0\", conv_layer(ni, nh, 3, stride=stride, act_fn=act_fn)),\n",
    "                   (f\"conv_1\", conv_layer(nh, nf, 3, zero_bn=zero_bn, act=False))\n",
    "        ] if expansion == 1 else [\n",
    "                   (f\"conv_0\",conv_layer(ni, nh, 1, act_fn=act_fn)),\n",
    "                   (f\"conv_1\",conv_layer(nh, nh, 3, stride=1, act_fn=act_fn)), #!!!\n",
    "                   (f\"conv_2\",conv_layer(nh, nf, 1, zero_bn=zero_bn, act=False))\n",
    "        ]\n",
    "        if sa: layers.append(('sa', SimpleSelfAttention(nf,ks=1,sym=sym)))\n",
    "        self.convs = nn.Sequential(OrderedDict(layers))\n",
    "        self.idconv = noop if ni==nf else conv_layer(ni, nf, 1, act=False)\n",
    "        self.merge =act_fn\n",
    "\n",
    "    def forward(self, x): \n",
    "        o = self.reduce(x)\n",
    "        return self.merge(self.convs(o) + self.idconv(o))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Parameters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "lr = 0.004\n",
    "epochs = 5\n",
    "moms = (0.95,0.95)\n",
    "start_pct = 0.72\n",
    "size=192\n",
    "bs=32"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Model Constructor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = xresnet50(c_out=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.block = NewResBlock"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "pool = MaxBlurPool2d(3, True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.pool = pool\n",
    "model.stem_pool = pool"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Mish activation loaded...\n"
     ]
    }
   ],
   "source": [
    "# model.stem_sizes = [3,32,32,64]\n",
    "model.stem_sizes = [3,32,64,64]\n",
    "\n",
    "model.act_fn= Mish()\n",
    "model.sa = True"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## repr model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Sequential(\n",
       "  model xresnet50\n",
       "  (stem): Sequential(\n",
       "    (conv_0): ConvLayer(\n",
       "      (conv): Conv2d(3, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (act_fn): Mish()\n",
       "    )\n",
       "    (conv_1): ConvLayer(\n",
       "      (conv): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (act_fn): Mish()\n",
       "    )\n",
       "    (conv_2): ConvLayer(\n",
       "      (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (act_fn): Mish()\n",
       "    )\n",
       "    (stem_pool): MaxBlurPool2d()\n",
       "  )\n",
       "  (body): Sequential(\n",
       "    (l_0): Sequential(\n",
       "      (bl_0): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (idconv): ConvLayer(\n",
       "          (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_1): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_2): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "          (sa): SimpleSelfAttention(\n",
       "            (conv): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "    )\n",
       "    (l_1): Sequential(\n",
       "      (bl_0): NewResBlock(\n",
       "        (reduce): MaxBlurPool2d()\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (idconv): ConvLayer(\n",
       "          (conv): Conv2d(256, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_1): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_2): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_3): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "    )\n",
       "    (l_2): Sequential(\n",
       "      (bl_0): NewResBlock(\n",
       "        (reduce): MaxBlurPool2d()\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (idconv): ConvLayer(\n",
       "          (conv): Conv2d(512, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_1): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_2): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_3): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_4): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_5): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "    )\n",
       "    (l_3): Sequential(\n",
       "      (bl_0): NewResBlock(\n",
       "        (reduce): MaxBlurPool2d()\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (idconv): ConvLayer(\n",
       "          (conv): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_1): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_2): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "    )\n",
       "  )\n",
       "  (head): Sequential(\n",
       "    (pool): AdaptiveAvgPool2d(output_size=1)\n",
       "    (flat): Flatten()\n",
       "    (fc): Linear(in_features=2048, out_features=10, bias=True)\n",
       "  )\n",
       ")"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Sequential(\n",
       "  (conv_0): ConvLayer(\n",
       "    (conv): Conv2d(3, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "    (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (act_fn): Mish()\n",
       "  )\n",
       "  (conv_1): ConvLayer(\n",
       "    (conv): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "    (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (act_fn): Mish()\n",
       "  )\n",
       "  (conv_2): ConvLayer(\n",
       "    (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "    (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (act_fn): Mish()\n",
       "  )\n",
       "  (stem_pool): MaxBlurPool2d()\n",
       ")"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.stem"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Sequential(\n",
       "  (l_0): Sequential(\n",
       "    (bl_0): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (idconv): ConvLayer(\n",
       "        (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_1): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_2): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "        (sa): SimpleSelfAttention(\n",
       "          (conv): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "  )\n",
       "  (l_1): Sequential(\n",
       "    (bl_0): NewResBlock(\n",
       "      (reduce): MaxBlurPool2d()\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (idconv): ConvLayer(\n",
       "        (conv): Conv2d(256, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_1): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_2): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_3): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "  )\n",
       "  (l_2): Sequential(\n",
       "    (bl_0): NewResBlock(\n",
       "      (reduce): MaxBlurPool2d()\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (idconv): ConvLayer(\n",
       "        (conv): Conv2d(512, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_1): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_2): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_3): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_4): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_5): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "  )\n",
       "  (l_3): Sequential(\n",
       "    (bl_0): NewResBlock(\n",
       "      (reduce): MaxBlurPool2d()\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (idconv): ConvLayer(\n",
       "        (conv): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_1): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_2): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "  )\n",
       ")"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.body"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Sequential(\n",
       "  (pool): AdaptiveAvgPool2d(output_size=1)\n",
       "  (flat): Flatten()\n",
       "  (fc): Linear(in_features=2048, out_features=10, bias=True)\n",
       ")"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.head"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Lr find"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /notebooks/data/imagewoof2\n",
      "Learn path /notebooks/data/imagewoof2\n"
     ]
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "        <style>\n",
       "            /* Turns off some styling */\n",
       "            progress {\n",
       "                /* gets rid of default border in Firefox and Opera. */\n",
       "                border: none;\n",
       "                /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "                background-size: auto;\n",
       "            }\n",
       "            .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "                background: #F44336;\n",
       "            }\n",
       "        </style>\n",
       "      <progress value='0' class='' max='1', style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      0.00% [0/1 00:00<00:00]\n",
       "    </div>\n",
       "    \n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "  </tbody>\n",
       "</table><p>\n",
       "\n",
       "    <div>\n",
       "        <style>\n",
       "            /* Turns off some styling */\n",
       "            progress {\n",
       "                /* gets rid of default border in Firefox and Opera. */\n",
       "                border: none;\n",
       "                /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "                background-size: auto;\n",
       "            }\n",
       "            .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "                background: #F44336;\n",
       "            }\n",
       "        </style>\n",
       "      <progress value='92' class='' max='282', style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      32.62% [92/282 00:28<00:58 8.6663]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "set state called\n",
      "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n"
     ]
    }
   ],
   "source": [
    "learn.lr_find()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn.recorder.plot()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# epochs 80 mixup 0.2 8969"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "epochs = 80\n",
    "mixup = 0.2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /notebooks/data/imagewoof2\n",
      "Learn path /notebooks/data/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>2.038993</td>\n",
       "      <td>1.777908</td>\n",
       "      <td>0.421736</td>\n",
       "      <td>0.885976</td>\n",
       "      <td>01:39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.820916</td>\n",
       "      <td>1.606790</td>\n",
       "      <td>0.504963</td>\n",
       "      <td>0.921354</td>\n",
       "      <td>01:41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.679442</td>\n",
       "      <td>1.437346</td>\n",
       "      <td>0.599389</td>\n",
       "      <td>0.943497</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.605249</td>\n",
       "      <td>1.328584</td>\n",
       "      <td>0.650802</td>\n",
       "      <td>0.958005</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1.521408</td>\n",
       "      <td>1.207655</td>\n",
       "      <td>0.709341</td>\n",
       "      <td>0.966404</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>1.458516</td>\n",
       "      <td>1.160979</td>\n",
       "      <td>0.739628</td>\n",
       "      <td>0.966913</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>1.402515</td>\n",
       "      <td>1.066762</td>\n",
       "      <td>0.776533</td>\n",
       "      <td>0.975821</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>1.366068</td>\n",
       "      <td>1.036347</td>\n",
       "      <td>0.793841</td>\n",
       "      <td>0.975057</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>1.327088</td>\n",
       "      <td>1.012159</td>\n",
       "      <td>0.795113</td>\n",
       "      <td>0.979130</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>1.292921</td>\n",
       "      <td>1.058623</td>\n",
       "      <td>0.780606</td>\n",
       "      <td>0.972258</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>1.264540</td>\n",
       "      <td>0.994044</td>\n",
       "      <td>0.797404</td>\n",
       "      <td>0.979639</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>1.219897</td>\n",
       "      <td>0.968968</td>\n",
       "      <td>0.814966</td>\n",
       "      <td>0.979384</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>1.222519</td>\n",
       "      <td>0.927663</td>\n",
       "      <td>0.831000</td>\n",
       "      <td>0.983456</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>1.190723</td>\n",
       "      <td>0.947190</td>\n",
       "      <td>0.824128</td>\n",
       "      <td>0.980911</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>1.191098</td>\n",
       "      <td>0.924672</td>\n",
       "      <td>0.831255</td>\n",
       "      <td>0.982947</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>1.173165</td>\n",
       "      <td>0.946447</td>\n",
       "      <td>0.820820</td>\n",
       "      <td>0.978875</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>1.148842</td>\n",
       "      <td>0.932554</td>\n",
       "      <td>0.834309</td>\n",
       "      <td>0.983456</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>1.134291</td>\n",
       "      <td>0.901188</td>\n",
       "      <td>0.837363</td>\n",
       "      <td>0.984474</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>1.098949</td>\n",
       "      <td>0.905706</td>\n",
       "      <td>0.843726</td>\n",
       "      <td>0.980657</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>1.086037</td>\n",
       "      <td>0.886808</td>\n",
       "      <td>0.853907</td>\n",
       "      <td>0.980657</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>20</td>\n",
       "      <td>1.073961</td>\n",
       "      <td>0.876532</td>\n",
       "      <td>0.856707</td>\n",
       "      <td>0.982184</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>21</td>\n",
       "      <td>1.073048</td>\n",
       "      <td>0.901388</td>\n",
       "      <td>0.839654</td>\n",
       "      <td>0.983711</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>22</td>\n",
       "      <td>1.077612</td>\n",
       "      <td>0.864097</td>\n",
       "      <td>0.860270</td>\n",
       "      <td>0.983965</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>23</td>\n",
       "      <td>1.042550</td>\n",
       "      <td>0.889508</td>\n",
       "      <td>0.849326</td>\n",
       "      <td>0.982947</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>24</td>\n",
       "      <td>1.033472</td>\n",
       "      <td>0.876375</td>\n",
       "      <td>0.849326</td>\n",
       "      <td>0.983456</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>25</td>\n",
       "      <td>1.024706</td>\n",
       "      <td>0.890289</td>\n",
       "      <td>0.848562</td>\n",
       "      <td>0.980657</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>26</td>\n",
       "      <td>1.027064</td>\n",
       "      <td>0.884517</td>\n",
       "      <td>0.851107</td>\n",
       "      <td>0.985747</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>27</td>\n",
       "      <td>1.006507</td>\n",
       "      <td>0.852331</td>\n",
       "      <td>0.862306</td>\n",
       "      <td>0.985747</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>28</td>\n",
       "      <td>0.994226</td>\n",
       "      <td>0.916588</td>\n",
       "      <td>0.834818</td>\n",
       "      <td>0.981675</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>29</td>\n",
       "      <td>0.990692</td>\n",
       "      <td>0.864900</td>\n",
       "      <td>0.863324</td>\n",
       "      <td>0.983202</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>30</td>\n",
       "      <td>0.981333</td>\n",
       "      <td>0.864143</td>\n",
       "      <td>0.862051</td>\n",
       "      <td>0.983711</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>31</td>\n",
       "      <td>0.969284</td>\n",
       "      <td>0.856638</td>\n",
       "      <td>0.859252</td>\n",
       "      <td>0.984474</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>32</td>\n",
       "      <td>0.971912</td>\n",
       "      <td>0.876806</td>\n",
       "      <td>0.852889</td>\n",
       "      <td>0.980911</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>33</td>\n",
       "      <td>0.965559</td>\n",
       "      <td>0.868399</td>\n",
       "      <td>0.856197</td>\n",
       "      <td>0.984220</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>34</td>\n",
       "      <td>0.961747</td>\n",
       "      <td>0.857580</td>\n",
       "      <td>0.864851</td>\n",
       "      <td>0.983711</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>35</td>\n",
       "      <td>0.946337</td>\n",
       "      <td>0.843202</td>\n",
       "      <td>0.869178</td>\n",
       "      <td>0.984220</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>36</td>\n",
       "      <td>0.952763</td>\n",
       "      <td>0.848262</td>\n",
       "      <td>0.865869</td>\n",
       "      <td>0.983456</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>37</td>\n",
       "      <td>0.940055</td>\n",
       "      <td>0.854248</td>\n",
       "      <td>0.862560</td>\n",
       "      <td>0.980911</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>38</td>\n",
       "      <td>0.941344</td>\n",
       "      <td>0.846900</td>\n",
       "      <td>0.864342</td>\n",
       "      <td>0.981420</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>39</td>\n",
       "      <td>0.914244</td>\n",
       "      <td>0.851293</td>\n",
       "      <td>0.866887</td>\n",
       "      <td>0.981675</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>40</td>\n",
       "      <td>0.935298</td>\n",
       "      <td>0.836738</td>\n",
       "      <td>0.870705</td>\n",
       "      <td>0.983456</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>41</td>\n",
       "      <td>0.922202</td>\n",
       "      <td>0.849387</td>\n",
       "      <td>0.869941</td>\n",
       "      <td>0.982693</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>42</td>\n",
       "      <td>0.914995</td>\n",
       "      <td>0.837346</td>\n",
       "      <td>0.868669</td>\n",
       "      <td>0.982947</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>43</td>\n",
       "      <td>0.907949</td>\n",
       "      <td>0.853757</td>\n",
       "      <td>0.865106</td>\n",
       "      <td>0.984983</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>44</td>\n",
       "      <td>0.906161</td>\n",
       "      <td>0.824535</td>\n",
       "      <td>0.878595</td>\n",
       "      <td>0.983202</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>45</td>\n",
       "      <td>0.903300</td>\n",
       "      <td>0.844090</td>\n",
       "      <td>0.871978</td>\n",
       "      <td>0.981675</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>46</td>\n",
       "      <td>0.903051</td>\n",
       "      <td>0.820486</td>\n",
       "      <td>0.874777</td>\n",
       "      <td>0.982184</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>47</td>\n",
       "      <td>0.887453</td>\n",
       "      <td>0.812046</td>\n",
       "      <td>0.880886</td>\n",
       "      <td>0.984983</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>48</td>\n",
       "      <td>0.888813</td>\n",
       "      <td>0.823667</td>\n",
       "      <td>0.876559</td>\n",
       "      <td>0.982693</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>49</td>\n",
       "      <td>0.879193</td>\n",
       "      <td>0.806235</td>\n",
       "      <td>0.882922</td>\n",
       "      <td>0.983456</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>50</td>\n",
       "      <td>0.881906</td>\n",
       "      <td>0.818817</td>\n",
       "      <td>0.880377</td>\n",
       "      <td>0.981929</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>51</td>\n",
       "      <td>0.858234</td>\n",
       "      <td>0.806693</td>\n",
       "      <td>0.882413</td>\n",
       "      <td>0.982947</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>52</td>\n",
       "      <td>0.851888</td>\n",
       "      <td>0.817813</td>\n",
       "      <td>0.880122</td>\n",
       "      <td>0.984729</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>53</td>\n",
       "      <td>0.838190</td>\n",
       "      <td>0.808084</td>\n",
       "      <td>0.880122</td>\n",
       "      <td>0.982693</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>54</td>\n",
       "      <td>0.848582</td>\n",
       "      <td>0.808593</td>\n",
       "      <td>0.880377</td>\n",
       "      <td>0.983965</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>55</td>\n",
       "      <td>0.859215</td>\n",
       "      <td>0.804100</td>\n",
       "      <td>0.880886</td>\n",
       "      <td>0.982438</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>56</td>\n",
       "      <td>0.845041</td>\n",
       "      <td>0.797164</td>\n",
       "      <td>0.884449</td>\n",
       "      <td>0.981166</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>57</td>\n",
       "      <td>0.846395</td>\n",
       "      <td>0.788074</td>\n",
       "      <td>0.892339</td>\n",
       "      <td>0.982693</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>58</td>\n",
       "      <td>0.832892</td>\n",
       "      <td>0.782392</td>\n",
       "      <td>0.890812</td>\n",
       "      <td>0.985238</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>59</td>\n",
       "      <td>0.837374</td>\n",
       "      <td>0.799285</td>\n",
       "      <td>0.886994</td>\n",
       "      <td>0.980911</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>60</td>\n",
       "      <td>0.824330</td>\n",
       "      <td>0.795390</td>\n",
       "      <td>0.889030</td>\n",
       "      <td>0.981929</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>61</td>\n",
       "      <td>0.823074</td>\n",
       "      <td>0.791690</td>\n",
       "      <td>0.888521</td>\n",
       "      <td>0.983456</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>62</td>\n",
       "      <td>0.818839</td>\n",
       "      <td>0.784239</td>\n",
       "      <td>0.891321</td>\n",
       "      <td>0.983202</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>63</td>\n",
       "      <td>0.820353</td>\n",
       "      <td>0.781728</td>\n",
       "      <td>0.887758</td>\n",
       "      <td>0.982693</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>64</td>\n",
       "      <td>0.822805</td>\n",
       "      <td>0.780127</td>\n",
       "      <td>0.892848</td>\n",
       "      <td>0.983456</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>65</td>\n",
       "      <td>0.820529</td>\n",
       "      <td>0.777463</td>\n",
       "      <td>0.890812</td>\n",
       "      <td>0.981166</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>66</td>\n",
       "      <td>0.820676</td>\n",
       "      <td>0.773178</td>\n",
       "      <td>0.893103</td>\n",
       "      <td>0.983456</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>67</td>\n",
       "      <td>0.812453</td>\n",
       "      <td>0.772881</td>\n",
       "      <td>0.893103</td>\n",
       "      <td>0.981675</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>68</td>\n",
       "      <td>0.810532</td>\n",
       "      <td>0.771859</td>\n",
       "      <td>0.894375</td>\n",
       "      <td>0.983202</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>69</td>\n",
       "      <td>0.812303</td>\n",
       "      <td>0.770884</td>\n",
       "      <td>0.892339</td>\n",
       "      <td>0.983965</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>70</td>\n",
       "      <td>0.809774</td>\n",
       "      <td>0.770044</td>\n",
       "      <td>0.893103</td>\n",
       "      <td>0.984474</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>71</td>\n",
       "      <td>0.805889</td>\n",
       "      <td>0.765160</td>\n",
       "      <td>0.898956</td>\n",
       "      <td>0.982947</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>72</td>\n",
       "      <td>0.801025</td>\n",
       "      <td>0.765616</td>\n",
       "      <td>0.898702</td>\n",
       "      <td>0.982947</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>73</td>\n",
       "      <td>0.814814</td>\n",
       "      <td>0.764610</td>\n",
       "      <td>0.900229</td>\n",
       "      <td>0.981929</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>74</td>\n",
       "      <td>0.804094</td>\n",
       "      <td>0.766600</td>\n",
       "      <td>0.894884</td>\n",
       "      <td>0.982184</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>75</td>\n",
       "      <td>0.810911</td>\n",
       "      <td>0.765260</td>\n",
       "      <td>0.897175</td>\n",
       "      <td>0.984729</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>76</td>\n",
       "      <td>0.811990</td>\n",
       "      <td>0.765672</td>\n",
       "      <td>0.899975</td>\n",
       "      <td>0.983711</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>77</td>\n",
       "      <td>0.801413</td>\n",
       "      <td>0.765177</td>\n",
       "      <td>0.896666</td>\n",
       "      <td>0.984474</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>78</td>\n",
       "      <td>0.795586</td>\n",
       "      <td>0.765315</td>\n",
       "      <td>0.897175</td>\n",
       "      <td>0.984220</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>79</td>\n",
       "      <td>0.813455</td>\n",
       "      <td>0.765516</td>\n",
       "      <td>0.900229</td>\n",
       "      <td>0.982693</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs,mixup=mixup)\n",
    "learn.fit_fc(epochs, lr, moms,0.4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn.recorder.plot_losses()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn.recorder.plot_metrics()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /notebooks/data/imagewoof2\n",
      "Learn path /notebooks/data/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1.996332</td>\n",
       "      <td>1.793064</td>\n",
       "      <td>0.445660</td>\n",
       "      <td>0.885976</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.817458</td>\n",
       "      <td>1.573786</td>\n",
       "      <td>0.525834</td>\n",
       "      <td>0.928481</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.699109</td>\n",
       "      <td>1.477938</td>\n",
       "      <td>0.586663</td>\n",
       "      <td>0.936880</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.598114</td>\n",
       "      <td>1.316228</td>\n",
       "      <td>0.658946</td>\n",
       "      <td>0.950878</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1.513477</td>\n",
       "      <td>1.339053</td>\n",
       "      <td>0.649275</td>\n",
       "      <td>0.959786</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>1.444515</td>\n",
       "      <td>1.176031</td>\n",
       "      <td>0.724103</td>\n",
       "      <td>0.961568</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>1.394613</td>\n",
       "      <td>1.130410</td>\n",
       "      <td>0.747773</td>\n",
       "      <td>0.965640</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>1.351438</td>\n",
       "      <td>1.052177</td>\n",
       "      <td>0.774243</td>\n",
       "      <td>0.972767</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>1.330948</td>\n",
       "      <td>1.063056</td>\n",
       "      <td>0.781878</td>\n",
       "      <td>0.977093</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>1.285249</td>\n",
       "      <td>1.007212</td>\n",
       "      <td>0.789005</td>\n",
       "      <td>0.978112</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>1.263260</td>\n",
       "      <td>0.976398</td>\n",
       "      <td>0.817511</td>\n",
       "      <td>0.978112</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>1.230775</td>\n",
       "      <td>0.963475</td>\n",
       "      <td>0.816493</td>\n",
       "      <td>0.980402</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>1.215800</td>\n",
       "      <td>0.959115</td>\n",
       "      <td>0.825655</td>\n",
       "      <td>0.976330</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>1.174113</td>\n",
       "      <td>0.962440</td>\n",
       "      <td>0.814457</td>\n",
       "      <td>0.975821</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>1.155410</td>\n",
       "      <td>0.939790</td>\n",
       "      <td>0.829982</td>\n",
       "      <td>0.978875</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>1.155022</td>\n",
       "      <td>0.943474</td>\n",
       "      <td>0.827437</td>\n",
       "      <td>0.982184</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>1.126619</td>\n",
       "      <td>0.951784</td>\n",
       "      <td>0.827437</td>\n",
       "      <td>0.980657</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>1.115265</td>\n",
       "      <td>0.922259</td>\n",
       "      <td>0.834054</td>\n",
       "      <td>0.982184</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>1.129832</td>\n",
       "      <td>0.893953</td>\n",
       "      <td>0.845253</td>\n",
       "      <td>0.979384</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>1.098394</td>\n",
       "      <td>0.892451</td>\n",
       "      <td>0.855943</td>\n",
       "      <td>0.983202</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>20</td>\n",
       "      <td>1.096172</td>\n",
       "      <td>0.880253</td>\n",
       "      <td>0.848307</td>\n",
       "      <td>0.982184</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>21</td>\n",
       "      <td>1.083329</td>\n",
       "      <td>0.922879</td>\n",
       "      <td>0.826164</td>\n",
       "      <td>0.980657</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>22</td>\n",
       "      <td>1.062819</td>\n",
       "      <td>0.877852</td>\n",
       "      <td>0.855179</td>\n",
       "      <td>0.983711</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>23</td>\n",
       "      <td>1.051575</td>\n",
       "      <td>0.873466</td>\n",
       "      <td>0.854416</td>\n",
       "      <td>0.983202</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>24</td>\n",
       "      <td>1.040778</td>\n",
       "      <td>0.865983</td>\n",
       "      <td>0.856961</td>\n",
       "      <td>0.983711</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>25</td>\n",
       "      <td>1.037425</td>\n",
       "      <td>0.852889</td>\n",
       "      <td>0.858743</td>\n",
       "      <td>0.985492</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>26</td>\n",
       "      <td>1.025031</td>\n",
       "      <td>0.879767</td>\n",
       "      <td>0.850089</td>\n",
       "      <td>0.984474</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>27</td>\n",
       "      <td>1.000966</td>\n",
       "      <td>0.868503</td>\n",
       "      <td>0.860524</td>\n",
       "      <td>0.981420</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>28</td>\n",
       "      <td>0.979527</td>\n",
       "      <td>0.861128</td>\n",
       "      <td>0.862051</td>\n",
       "      <td>0.981166</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>29</td>\n",
       "      <td>0.988136</td>\n",
       "      <td>0.870521</td>\n",
       "      <td>0.857216</td>\n",
       "      <td>0.983711</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>30</td>\n",
       "      <td>0.990292</td>\n",
       "      <td>0.861061</td>\n",
       "      <td>0.860524</td>\n",
       "      <td>0.981675</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>31</td>\n",
       "      <td>0.984164</td>\n",
       "      <td>0.850692</td>\n",
       "      <td>0.862306</td>\n",
       "      <td>0.984729</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>32</td>\n",
       "      <td>0.967805</td>\n",
       "      <td>0.847432</td>\n",
       "      <td>0.867651</td>\n",
       "      <td>0.982438</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>33</td>\n",
       "      <td>0.951370</td>\n",
       "      <td>0.876975</td>\n",
       "      <td>0.854670</td>\n",
       "      <td>0.981929</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>34</td>\n",
       "      <td>0.985196</td>\n",
       "      <td>0.860528</td>\n",
       "      <td>0.864342</td>\n",
       "      <td>0.979893</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>35</td>\n",
       "      <td>0.959520</td>\n",
       "      <td>0.847558</td>\n",
       "      <td>0.868669</td>\n",
       "      <td>0.982438</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>36</td>\n",
       "      <td>0.947968</td>\n",
       "      <td>0.859246</td>\n",
       "      <td>0.862051</td>\n",
       "      <td>0.982693</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>37</td>\n",
       "      <td>0.938392</td>\n",
       "      <td>0.855046</td>\n",
       "      <td>0.863833</td>\n",
       "      <td>0.984220</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>38</td>\n",
       "      <td>0.925728</td>\n",
       "      <td>0.836884</td>\n",
       "      <td>0.868923</td>\n",
       "      <td>0.985492</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>39</td>\n",
       "      <td>0.930671</td>\n",
       "      <td>0.853096</td>\n",
       "      <td>0.867905</td>\n",
       "      <td>0.980402</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>40</td>\n",
       "      <td>0.932143</td>\n",
       "      <td>0.840052</td>\n",
       "      <td>0.869432</td>\n",
       "      <td>0.984983</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>41</td>\n",
       "      <td>0.916254</td>\n",
       "      <td>0.830558</td>\n",
       "      <td>0.870960</td>\n",
       "      <td>0.982693</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>42</td>\n",
       "      <td>0.899347</td>\n",
       "      <td>0.850961</td>\n",
       "      <td>0.864088</td>\n",
       "      <td>0.983711</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>43</td>\n",
       "      <td>0.920693</td>\n",
       "      <td>0.833181</td>\n",
       "      <td>0.873759</td>\n",
       "      <td>0.983456</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>44</td>\n",
       "      <td>0.907338</td>\n",
       "      <td>0.821489</td>\n",
       "      <td>0.875286</td>\n",
       "      <td>0.983456</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>45</td>\n",
       "      <td>0.907935</td>\n",
       "      <td>0.847271</td>\n",
       "      <td>0.868414</td>\n",
       "      <td>0.981166</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>46</td>\n",
       "      <td>0.898181</td>\n",
       "      <td>0.820738</td>\n",
       "      <td>0.874014</td>\n",
       "      <td>0.983711</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>47</td>\n",
       "      <td>0.896427</td>\n",
       "      <td>0.835454</td>\n",
       "      <td>0.878850</td>\n",
       "      <td>0.982947</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>48</td>\n",
       "      <td>0.893488</td>\n",
       "      <td>0.820907</td>\n",
       "      <td>0.881140</td>\n",
       "      <td>0.981420</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>49</td>\n",
       "      <td>0.895791</td>\n",
       "      <td>0.823917</td>\n",
       "      <td>0.875541</td>\n",
       "      <td>0.982184</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>50</td>\n",
       "      <td>0.866502</td>\n",
       "      <td>0.823119</td>\n",
       "      <td>0.879868</td>\n",
       "      <td>0.983711</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>51</td>\n",
       "      <td>0.866237</td>\n",
       "      <td>0.825367</td>\n",
       "      <td>0.875286</td>\n",
       "      <td>0.982438</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>52</td>\n",
       "      <td>0.876459</td>\n",
       "      <td>0.818040</td>\n",
       "      <td>0.878850</td>\n",
       "      <td>0.982184</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>53</td>\n",
       "      <td>0.859746</td>\n",
       "      <td>0.814051</td>\n",
       "      <td>0.884703</td>\n",
       "      <td>0.979639</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>54</td>\n",
       "      <td>0.859207</td>\n",
       "      <td>0.814038</td>\n",
       "      <td>0.874777</td>\n",
       "      <td>0.982184</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>55</td>\n",
       "      <td>0.866626</td>\n",
       "      <td>0.797439</td>\n",
       "      <td>0.888776</td>\n",
       "      <td>0.982438</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>56</td>\n",
       "      <td>0.845247</td>\n",
       "      <td>0.793085</td>\n",
       "      <td>0.888012</td>\n",
       "      <td>0.985492</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>57</td>\n",
       "      <td>0.850602</td>\n",
       "      <td>0.797625</td>\n",
       "      <td>0.884194</td>\n",
       "      <td>0.982184</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>58</td>\n",
       "      <td>0.830860</td>\n",
       "      <td>0.794559</td>\n",
       "      <td>0.888267</td>\n",
       "      <td>0.984474</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>59</td>\n",
       "      <td>0.831134</td>\n",
       "      <td>0.791554</td>\n",
       "      <td>0.888776</td>\n",
       "      <td>0.980657</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>60</td>\n",
       "      <td>0.817542</td>\n",
       "      <td>0.784814</td>\n",
       "      <td>0.892848</td>\n",
       "      <td>0.982438</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>61</td>\n",
       "      <td>0.830964</td>\n",
       "      <td>0.785611</td>\n",
       "      <td>0.890048</td>\n",
       "      <td>0.983965</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>62</td>\n",
       "      <td>0.816071</td>\n",
       "      <td>0.781270</td>\n",
       "      <td>0.891321</td>\n",
       "      <td>0.985238</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>63</td>\n",
       "      <td>0.841194</td>\n",
       "      <td>0.772889</td>\n",
       "      <td>0.894121</td>\n",
       "      <td>0.983965</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>64</td>\n",
       "      <td>0.821697</td>\n",
       "      <td>0.775024</td>\n",
       "      <td>0.894121</td>\n",
       "      <td>0.983456</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>65</td>\n",
       "      <td>0.819428</td>\n",
       "      <td>0.773193</td>\n",
       "      <td>0.895139</td>\n",
       "      <td>0.982947</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>66</td>\n",
       "      <td>0.829417</td>\n",
       "      <td>0.779974</td>\n",
       "      <td>0.892339</td>\n",
       "      <td>0.981675</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>67</td>\n",
       "      <td>0.802840</td>\n",
       "      <td>0.769895</td>\n",
       "      <td>0.893357</td>\n",
       "      <td>0.984474</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>68</td>\n",
       "      <td>0.818250</td>\n",
       "      <td>0.770526</td>\n",
       "      <td>0.896157</td>\n",
       "      <td>0.982184</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>69</td>\n",
       "      <td>0.820794</td>\n",
       "      <td>0.769512</td>\n",
       "      <td>0.894375</td>\n",
       "      <td>0.982438</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>70</td>\n",
       "      <td>0.815717</td>\n",
       "      <td>0.766205</td>\n",
       "      <td>0.900484</td>\n",
       "      <td>0.984474</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>71</td>\n",
       "      <td>0.820034</td>\n",
       "      <td>0.766597</td>\n",
       "      <td>0.898447</td>\n",
       "      <td>0.984729</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>72</td>\n",
       "      <td>0.809216</td>\n",
       "      <td>0.765981</td>\n",
       "      <td>0.901502</td>\n",
       "      <td>0.982693</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>73</td>\n",
       "      <td>0.808752</td>\n",
       "      <td>0.764956</td>\n",
       "      <td>0.899211</td>\n",
       "      <td>0.983965</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>74</td>\n",
       "      <td>0.821493</td>\n",
       "      <td>0.766026</td>\n",
       "      <td>0.898193</td>\n",
       "      <td>0.985238</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>75</td>\n",
       "      <td>0.808697</td>\n",
       "      <td>0.762783</td>\n",
       "      <td>0.900229</td>\n",
       "      <td>0.983711</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>76</td>\n",
       "      <td>0.811831</td>\n",
       "      <td>0.761411</td>\n",
       "      <td>0.902774</td>\n",
       "      <td>0.984474</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>77</td>\n",
       "      <td>0.808834</td>\n",
       "      <td>0.761704</td>\n",
       "      <td>0.901756</td>\n",
       "      <td>0.984474</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>78</td>\n",
       "      <td>0.810326</td>\n",
       "      <td>0.761555</td>\n",
       "      <td>0.898702</td>\n",
       "      <td>0.984474</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>79</td>\n",
       "      <td>0.812939</td>\n",
       "      <td>0.762914</td>\n",
       "      <td>0.898702</td>\n",
       "      <td>0.984220</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs,mixup=mixup)\n",
    "learn.fit_fc(epochs, lr, moms,0.4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /notebooks/data/imagewoof2\n",
      "Learn path /notebooks/data/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>2.021080</td>\n",
       "      <td>1.822080</td>\n",
       "      <td>0.411046</td>\n",
       "      <td>0.869178</td>\n",
       "      <td>01:38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.869004</td>\n",
       "      <td>1.661419</td>\n",
       "      <td>0.489692</td>\n",
       "      <td>0.908628</td>\n",
       "      <td>01:41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.732259</td>\n",
       "      <td>1.454422</td>\n",
       "      <td>0.588954</td>\n",
       "      <td>0.933571</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.595746</td>\n",
       "      <td>1.345538</td>\n",
       "      <td>0.642912</td>\n",
       "      <td>0.948078</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1.541594</td>\n",
       "      <td>1.242807</td>\n",
       "      <td>0.694833</td>\n",
       "      <td>0.959023</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>1.455556</td>\n",
       "      <td>1.153982</td>\n",
       "      <td>0.732247</td>\n",
       "      <td>0.965895</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>1.406329</td>\n",
       "      <td>1.135247</td>\n",
       "      <td>0.739628</td>\n",
       "      <td>0.967422</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>1.354123</td>\n",
       "      <td>1.112606</td>\n",
       "      <td>0.749809</td>\n",
       "      <td>0.962331</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>1.327081</td>\n",
       "      <td>1.039248</td>\n",
       "      <td>0.787223</td>\n",
       "      <td>0.975312</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>1.291911</td>\n",
       "      <td>1.006813</td>\n",
       "      <td>0.793841</td>\n",
       "      <td>0.978875</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>1.282116</td>\n",
       "      <td>1.029605</td>\n",
       "      <td>0.792568</td>\n",
       "      <td>0.972003</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>1.233104</td>\n",
       "      <td>0.992425</td>\n",
       "      <td>0.803767</td>\n",
       "      <td>0.975057</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>1.230533</td>\n",
       "      <td>0.959364</td>\n",
       "      <td>0.819038</td>\n",
       "      <td>0.980657</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>1.194580</td>\n",
       "      <td>0.955019</td>\n",
       "      <td>0.825910</td>\n",
       "      <td>0.980148</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>1.174195</td>\n",
       "      <td>0.952620</td>\n",
       "      <td>0.825910</td>\n",
       "      <td>0.980657</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>1.162032</td>\n",
       "      <td>0.945918</td>\n",
       "      <td>0.826164</td>\n",
       "      <td>0.979639</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>1.161199</td>\n",
       "      <td>0.903926</td>\n",
       "      <td>0.845253</td>\n",
       "      <td>0.986256</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>1.128165</td>\n",
       "      <td>0.927676</td>\n",
       "      <td>0.830491</td>\n",
       "      <td>0.980402</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>1.117728</td>\n",
       "      <td>0.911767</td>\n",
       "      <td>0.838127</td>\n",
       "      <td>0.979893</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>1.114339</td>\n",
       "      <td>0.899538</td>\n",
       "      <td>0.844490</td>\n",
       "      <td>0.980402</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>20</td>\n",
       "      <td>1.070710</td>\n",
       "      <td>0.886701</td>\n",
       "      <td>0.849071</td>\n",
       "      <td>0.983965</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>21</td>\n",
       "      <td>1.078351</td>\n",
       "      <td>0.882595</td>\n",
       "      <td>0.851362</td>\n",
       "      <td>0.984474</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>22</td>\n",
       "      <td>1.077350</td>\n",
       "      <td>0.896273</td>\n",
       "      <td>0.855943</td>\n",
       "      <td>0.980911</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>23</td>\n",
       "      <td>1.035420</td>\n",
       "      <td>0.878805</td>\n",
       "      <td>0.857216</td>\n",
       "      <td>0.980911</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>24</td>\n",
       "      <td>1.044872</td>\n",
       "      <td>0.879518</td>\n",
       "      <td>0.849071</td>\n",
       "      <td>0.982438</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>25</td>\n",
       "      <td>1.018232</td>\n",
       "      <td>0.866363</td>\n",
       "      <td>0.853143</td>\n",
       "      <td>0.985492</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>26</td>\n",
       "      <td>1.028838</td>\n",
       "      <td>0.868448</td>\n",
       "      <td>0.858488</td>\n",
       "      <td>0.984474</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>27</td>\n",
       "      <td>1.028452</td>\n",
       "      <td>0.870712</td>\n",
       "      <td>0.855434</td>\n",
       "      <td>0.981675</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>28</td>\n",
       "      <td>1.012209</td>\n",
       "      <td>0.862468</td>\n",
       "      <td>0.853398</td>\n",
       "      <td>0.981166</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>29</td>\n",
       "      <td>1.016475</td>\n",
       "      <td>0.882855</td>\n",
       "      <td>0.856452</td>\n",
       "      <td>0.981675</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>30</td>\n",
       "      <td>0.986215</td>\n",
       "      <td>0.886339</td>\n",
       "      <td>0.853398</td>\n",
       "      <td>0.979639</td>\n",
       "      <td>01:50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>31</td>\n",
       "      <td>0.999854</td>\n",
       "      <td>0.884773</td>\n",
       "      <td>0.848307</td>\n",
       "      <td>0.978875</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>32</td>\n",
       "      <td>0.983095</td>\n",
       "      <td>0.846554</td>\n",
       "      <td>0.869178</td>\n",
       "      <td>0.984983</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>33</td>\n",
       "      <td>0.987724</td>\n",
       "      <td>0.862846</td>\n",
       "      <td>0.860270</td>\n",
       "      <td>0.980911</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>34</td>\n",
       "      <td>0.965226</td>\n",
       "      <td>0.852839</td>\n",
       "      <td>0.864851</td>\n",
       "      <td>0.982947</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>35</td>\n",
       "      <td>0.965762</td>\n",
       "      <td>0.848931</td>\n",
       "      <td>0.865106</td>\n",
       "      <td>0.982184</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>36</td>\n",
       "      <td>0.972921</td>\n",
       "      <td>0.833366</td>\n",
       "      <td>0.867651</td>\n",
       "      <td>0.984474</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>37</td>\n",
       "      <td>0.962696</td>\n",
       "      <td>0.862933</td>\n",
       "      <td>0.862051</td>\n",
       "      <td>0.981675</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>38</td>\n",
       "      <td>0.944100</td>\n",
       "      <td>0.847085</td>\n",
       "      <td>0.866124</td>\n",
       "      <td>0.984729</td>\n",
       "      <td>01:53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>39</td>\n",
       "      <td>0.937157</td>\n",
       "      <td>0.850338</td>\n",
       "      <td>0.870450</td>\n",
       "      <td>0.982693</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>40</td>\n",
       "      <td>0.930412</td>\n",
       "      <td>0.871083</td>\n",
       "      <td>0.856707</td>\n",
       "      <td>0.978621</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>41</td>\n",
       "      <td>0.916105</td>\n",
       "      <td>0.855308</td>\n",
       "      <td>0.864088</td>\n",
       "      <td>0.982184</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>42</td>\n",
       "      <td>0.911027</td>\n",
       "      <td>0.851087</td>\n",
       "      <td>0.870450</td>\n",
       "      <td>0.975821</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>43</td>\n",
       "      <td>0.929706</td>\n",
       "      <td>0.840007</td>\n",
       "      <td>0.866633</td>\n",
       "      <td>0.983711</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>44</td>\n",
       "      <td>0.908576</td>\n",
       "      <td>0.832604</td>\n",
       "      <td>0.871978</td>\n",
       "      <td>0.980657</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>45</td>\n",
       "      <td>0.895514</td>\n",
       "      <td>0.823207</td>\n",
       "      <td>0.872741</td>\n",
       "      <td>0.984474</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>46</td>\n",
       "      <td>0.899918</td>\n",
       "      <td>0.842500</td>\n",
       "      <td>0.868414</td>\n",
       "      <td>0.979639</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>47</td>\n",
       "      <td>0.880228</td>\n",
       "      <td>0.837218</td>\n",
       "      <td>0.867396</td>\n",
       "      <td>0.980402</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>48</td>\n",
       "      <td>0.891562</td>\n",
       "      <td>0.840050</td>\n",
       "      <td>0.874268</td>\n",
       "      <td>0.979384</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>49</td>\n",
       "      <td>0.871675</td>\n",
       "      <td>0.837688</td>\n",
       "      <td>0.870705</td>\n",
       "      <td>0.981420</td>\n",
       "      <td>01:44</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>50</td>\n",
       "      <td>0.873471</td>\n",
       "      <td>0.824226</td>\n",
       "      <td>0.880886</td>\n",
       "      <td>0.980657</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>51</td>\n",
       "      <td>0.868345</td>\n",
       "      <td>0.832456</td>\n",
       "      <td>0.874523</td>\n",
       "      <td>0.978366</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>52</td>\n",
       "      <td>0.858109</td>\n",
       "      <td>0.811212</td>\n",
       "      <td>0.883940</td>\n",
       "      <td>0.979130</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>53</td>\n",
       "      <td>0.866177</td>\n",
       "      <td>0.818376</td>\n",
       "      <td>0.879104</td>\n",
       "      <td>0.982947</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>54</td>\n",
       "      <td>0.866858</td>\n",
       "      <td>0.820838</td>\n",
       "      <td>0.881649</td>\n",
       "      <td>0.980657</td>\n",
       "      <td>01:46</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>55</td>\n",
       "      <td>0.851243</td>\n",
       "      <td>0.818625</td>\n",
       "      <td>0.879613</td>\n",
       "      <td>0.980657</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>56</td>\n",
       "      <td>0.863603</td>\n",
       "      <td>0.820452</td>\n",
       "      <td>0.879868</td>\n",
       "      <td>0.980402</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>57</td>\n",
       "      <td>0.867755</td>\n",
       "      <td>0.816538</td>\n",
       "      <td>0.882413</td>\n",
       "      <td>0.981420</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>58</td>\n",
       "      <td>0.840777</td>\n",
       "      <td>0.805041</td>\n",
       "      <td>0.884194</td>\n",
       "      <td>0.981420</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>59</td>\n",
       "      <td>0.844867</td>\n",
       "      <td>0.807939</td>\n",
       "      <td>0.881140</td>\n",
       "      <td>0.979893</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>60</td>\n",
       "      <td>0.832262</td>\n",
       "      <td>0.802401</td>\n",
       "      <td>0.882413</td>\n",
       "      <td>0.980911</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>61</td>\n",
       "      <td>0.821438</td>\n",
       "      <td>0.796450</td>\n",
       "      <td>0.883685</td>\n",
       "      <td>0.978112</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>62</td>\n",
       "      <td>0.820470</td>\n",
       "      <td>0.797009</td>\n",
       "      <td>0.889030</td>\n",
       "      <td>0.981166</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>63</td>\n",
       "      <td>0.818603</td>\n",
       "      <td>0.804654</td>\n",
       "      <td>0.881140</td>\n",
       "      <td>0.982693</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>64</td>\n",
       "      <td>0.832231</td>\n",
       "      <td>0.797790</td>\n",
       "      <td>0.881649</td>\n",
       "      <td>0.980148</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>65</td>\n",
       "      <td>0.823303</td>\n",
       "      <td>0.795705</td>\n",
       "      <td>0.886231</td>\n",
       "      <td>0.982693</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>66</td>\n",
       "      <td>0.821125</td>\n",
       "      <td>0.795446</td>\n",
       "      <td>0.889285</td>\n",
       "      <td>0.980657</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>67</td>\n",
       "      <td>0.810150</td>\n",
       "      <td>0.790142</td>\n",
       "      <td>0.888776</td>\n",
       "      <td>0.980402</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>68</td>\n",
       "      <td>0.811235</td>\n",
       "      <td>0.787957</td>\n",
       "      <td>0.887758</td>\n",
       "      <td>0.981675</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>69</td>\n",
       "      <td>0.804770</td>\n",
       "      <td>0.787161</td>\n",
       "      <td>0.889030</td>\n",
       "      <td>0.983965</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>70</td>\n",
       "      <td>0.812527</td>\n",
       "      <td>0.787490</td>\n",
       "      <td>0.890303</td>\n",
       "      <td>0.983202</td>\n",
       "      <td>01:44</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>71</td>\n",
       "      <td>0.803444</td>\n",
       "      <td>0.780298</td>\n",
       "      <td>0.891575</td>\n",
       "      <td>0.982184</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>72</td>\n",
       "      <td>0.800349</td>\n",
       "      <td>0.781597</td>\n",
       "      <td>0.890812</td>\n",
       "      <td>0.982438</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>73</td>\n",
       "      <td>0.805223</td>\n",
       "      <td>0.779460</td>\n",
       "      <td>0.893103</td>\n",
       "      <td>0.981929</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>74</td>\n",
       "      <td>0.805992</td>\n",
       "      <td>0.777989</td>\n",
       "      <td>0.892848</td>\n",
       "      <td>0.982693</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>75</td>\n",
       "      <td>0.807528</td>\n",
       "      <td>0.778533</td>\n",
       "      <td>0.891830</td>\n",
       "      <td>0.982693</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>76</td>\n",
       "      <td>0.828264</td>\n",
       "      <td>0.777322</td>\n",
       "      <td>0.891830</td>\n",
       "      <td>0.983711</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>77</td>\n",
       "      <td>0.798834</td>\n",
       "      <td>0.775802</td>\n",
       "      <td>0.892594</td>\n",
       "      <td>0.983202</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>78</td>\n",
       "      <td>0.804432</td>\n",
       "      <td>0.776207</td>\n",
       "      <td>0.895139</td>\n",
       "      <td>0.982184</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>79</td>\n",
       "      <td>0.805936</td>\n",
       "      <td>0.777408</td>\n",
       "      <td>0.893103</td>\n",
       "      <td>0.982184</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs,mixup=mixup)\n",
    "learn.fit_fc(epochs, lr, moms,0.4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn.recorder.plot_losses()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /notebooks/data/imagewoof2\n",
      "Learn path /notebooks/data/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>2.049345</td>\n",
       "      <td>1.905278</td>\n",
       "      <td>0.376432</td>\n",
       "      <td>0.852125</td>\n",
       "      <td>01:39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.872730</td>\n",
       "      <td>1.622021</td>\n",
       "      <td>0.515144</td>\n",
       "      <td>0.907865</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.723590</td>\n",
       "      <td>1.497098</td>\n",
       "      <td>0.576737</td>\n",
       "      <td>0.927717</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.601228</td>\n",
       "      <td>1.326681</td>\n",
       "      <td>0.656910</td>\n",
       "      <td>0.952914</td>\n",
       "      <td>01:41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1.531626</td>\n",
       "      <td>1.273032</td>\n",
       "      <td>0.671672</td>\n",
       "      <td>0.955205</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>1.459715</td>\n",
       "      <td>1.180380</td>\n",
       "      <td>0.718249</td>\n",
       "      <td>0.965640</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>1.423446</td>\n",
       "      <td>1.110332</td>\n",
       "      <td>0.754645</td>\n",
       "      <td>0.968694</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>1.373215</td>\n",
       "      <td>1.061474</td>\n",
       "      <td>0.778824</td>\n",
       "      <td>0.973021</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>1.315064</td>\n",
       "      <td>1.050892</td>\n",
       "      <td>0.784424</td>\n",
       "      <td>0.976075</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>1.310473</td>\n",
       "      <td>1.033883</td>\n",
       "      <td>0.783151</td>\n",
       "      <td>0.974803</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>1.290394</td>\n",
       "      <td>1.006269</td>\n",
       "      <td>0.799695</td>\n",
       "      <td>0.976330</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>1.258505</td>\n",
       "      <td>0.986094</td>\n",
       "      <td>0.806821</td>\n",
       "      <td>0.977602</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>1.229148</td>\n",
       "      <td>0.957406</td>\n",
       "      <td>0.822347</td>\n",
       "      <td>0.983202</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>1.205979</td>\n",
       "      <td>0.991209</td>\n",
       "      <td>0.809621</td>\n",
       "      <td>0.977093</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>1.188616</td>\n",
       "      <td>0.968346</td>\n",
       "      <td>0.818020</td>\n",
       "      <td>0.979384</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>1.143714</td>\n",
       "      <td>0.927850</td>\n",
       "      <td>0.829473</td>\n",
       "      <td>0.979384</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>1.153396</td>\n",
       "      <td>0.930598</td>\n",
       "      <td>0.837618</td>\n",
       "      <td>0.982693</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>1.131491</td>\n",
       "      <td>0.928615</td>\n",
       "      <td>0.843472</td>\n",
       "      <td>0.978875</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>1.108673</td>\n",
       "      <td>0.906270</td>\n",
       "      <td>0.836600</td>\n",
       "      <td>0.982438</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>1.092237</td>\n",
       "      <td>0.899414</td>\n",
       "      <td>0.842708</td>\n",
       "      <td>0.980148</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>20</td>\n",
       "      <td>1.080966</td>\n",
       "      <td>0.882767</td>\n",
       "      <td>0.856197</td>\n",
       "      <td>0.983202</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>21</td>\n",
       "      <td>1.081106</td>\n",
       "      <td>0.897933</td>\n",
       "      <td>0.841435</td>\n",
       "      <td>0.985238</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>22</td>\n",
       "      <td>1.056244</td>\n",
       "      <td>0.879003</td>\n",
       "      <td>0.856197</td>\n",
       "      <td>0.980402</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>23</td>\n",
       "      <td>1.049027</td>\n",
       "      <td>0.864408</td>\n",
       "      <td>0.858234</td>\n",
       "      <td>0.983456</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>24</td>\n",
       "      <td>1.050439</td>\n",
       "      <td>0.864327</td>\n",
       "      <td>0.857725</td>\n",
       "      <td>0.984474</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>25</td>\n",
       "      <td>1.028425</td>\n",
       "      <td>0.906392</td>\n",
       "      <td>0.838127</td>\n",
       "      <td>0.986256</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>26</td>\n",
       "      <td>1.013337</td>\n",
       "      <td>0.869149</td>\n",
       "      <td>0.858997</td>\n",
       "      <td>0.981166</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>27</td>\n",
       "      <td>1.005649</td>\n",
       "      <td>0.889935</td>\n",
       "      <td>0.853652</td>\n",
       "      <td>0.981675</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>28</td>\n",
       "      <td>1.009639</td>\n",
       "      <td>0.873652</td>\n",
       "      <td>0.861288</td>\n",
       "      <td>0.981929</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>29</td>\n",
       "      <td>1.005357</td>\n",
       "      <td>0.863329</td>\n",
       "      <td>0.858488</td>\n",
       "      <td>0.982438</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>30</td>\n",
       "      <td>0.988779</td>\n",
       "      <td>0.857272</td>\n",
       "      <td>0.862560</td>\n",
       "      <td>0.984220</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>31</td>\n",
       "      <td>0.978512</td>\n",
       "      <td>0.862545</td>\n",
       "      <td>0.860270</td>\n",
       "      <td>0.982184</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>32</td>\n",
       "      <td>0.988669</td>\n",
       "      <td>0.855873</td>\n",
       "      <td>0.860779</td>\n",
       "      <td>0.983711</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>33</td>\n",
       "      <td>0.986041</td>\n",
       "      <td>0.842838</td>\n",
       "      <td>0.872996</td>\n",
       "      <td>0.982184</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>34</td>\n",
       "      <td>0.972998</td>\n",
       "      <td>0.843353</td>\n",
       "      <td>0.867142</td>\n",
       "      <td>0.983711</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>35</td>\n",
       "      <td>0.960899</td>\n",
       "      <td>0.845256</td>\n",
       "      <td>0.864597</td>\n",
       "      <td>0.983965</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>36</td>\n",
       "      <td>0.942328</td>\n",
       "      <td>0.850002</td>\n",
       "      <td>0.862051</td>\n",
       "      <td>0.984220</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>37</td>\n",
       "      <td>0.954374</td>\n",
       "      <td>0.863083</td>\n",
       "      <td>0.859506</td>\n",
       "      <td>0.978112</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>38</td>\n",
       "      <td>0.941065</td>\n",
       "      <td>0.846824</td>\n",
       "      <td>0.867651</td>\n",
       "      <td>0.981420</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>39</td>\n",
       "      <td>0.938701</td>\n",
       "      <td>0.860926</td>\n",
       "      <td>0.860779</td>\n",
       "      <td>0.979384</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>40</td>\n",
       "      <td>0.928887</td>\n",
       "      <td>0.861647</td>\n",
       "      <td>0.867905</td>\n",
       "      <td>0.979384</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>41</td>\n",
       "      <td>0.934946</td>\n",
       "      <td>0.837110</td>\n",
       "      <td>0.874523</td>\n",
       "      <td>0.980402</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>42</td>\n",
       "      <td>0.932532</td>\n",
       "      <td>0.848257</td>\n",
       "      <td>0.865106</td>\n",
       "      <td>0.984220</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>43</td>\n",
       "      <td>0.922032</td>\n",
       "      <td>0.839928</td>\n",
       "      <td>0.875286</td>\n",
       "      <td>0.981929</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>44</td>\n",
       "      <td>0.912029</td>\n",
       "      <td>0.823960</td>\n",
       "      <td>0.874268</td>\n",
       "      <td>0.984220</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>45</td>\n",
       "      <td>0.901723</td>\n",
       "      <td>0.842642</td>\n",
       "      <td>0.865360</td>\n",
       "      <td>0.985238</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>46</td>\n",
       "      <td>0.897105</td>\n",
       "      <td>0.813002</td>\n",
       "      <td>0.880886</td>\n",
       "      <td>0.987783</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>47</td>\n",
       "      <td>0.887123</td>\n",
       "      <td>0.818705</td>\n",
       "      <td>0.879868</td>\n",
       "      <td>0.987274</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>48</td>\n",
       "      <td>0.881200</td>\n",
       "      <td>0.831358</td>\n",
       "      <td>0.871723</td>\n",
       "      <td>0.980657</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>49</td>\n",
       "      <td>0.875462</td>\n",
       "      <td>0.824846</td>\n",
       "      <td>0.878086</td>\n",
       "      <td>0.981420</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>50</td>\n",
       "      <td>0.891252</td>\n",
       "      <td>0.820375</td>\n",
       "      <td>0.878086</td>\n",
       "      <td>0.981929</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>51</td>\n",
       "      <td>0.876255</td>\n",
       "      <td>0.815093</td>\n",
       "      <td>0.875541</td>\n",
       "      <td>0.982184</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>52</td>\n",
       "      <td>0.861882</td>\n",
       "      <td>0.815623</td>\n",
       "      <td>0.878595</td>\n",
       "      <td>0.983965</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>53</td>\n",
       "      <td>0.871814</td>\n",
       "      <td>0.821930</td>\n",
       "      <td>0.874523</td>\n",
       "      <td>0.979384</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>54</td>\n",
       "      <td>0.861473</td>\n",
       "      <td>0.817888</td>\n",
       "      <td>0.877322</td>\n",
       "      <td>0.983965</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>55</td>\n",
       "      <td>0.854097</td>\n",
       "      <td>0.801152</td>\n",
       "      <td>0.881649</td>\n",
       "      <td>0.984729</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>56</td>\n",
       "      <td>0.838382</td>\n",
       "      <td>0.798555</td>\n",
       "      <td>0.883176</td>\n",
       "      <td>0.982693</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>57</td>\n",
       "      <td>0.839517</td>\n",
       "      <td>0.802228</td>\n",
       "      <td>0.882158</td>\n",
       "      <td>0.984983</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>58</td>\n",
       "      <td>0.836613</td>\n",
       "      <td>0.790603</td>\n",
       "      <td>0.887758</td>\n",
       "      <td>0.985238</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>59</td>\n",
       "      <td>0.835793</td>\n",
       "      <td>0.793146</td>\n",
       "      <td>0.887249</td>\n",
       "      <td>0.984474</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>60</td>\n",
       "      <td>0.838837</td>\n",
       "      <td>0.789391</td>\n",
       "      <td>0.888267</td>\n",
       "      <td>0.985747</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>61</td>\n",
       "      <td>0.831924</td>\n",
       "      <td>0.784889</td>\n",
       "      <td>0.890048</td>\n",
       "      <td>0.984220</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>62</td>\n",
       "      <td>0.820538</td>\n",
       "      <td>0.784421</td>\n",
       "      <td>0.889539</td>\n",
       "      <td>0.985238</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>63</td>\n",
       "      <td>0.819909</td>\n",
       "      <td>0.781632</td>\n",
       "      <td>0.890048</td>\n",
       "      <td>0.986002</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>64</td>\n",
       "      <td>0.820960</td>\n",
       "      <td>0.780287</td>\n",
       "      <td>0.887758</td>\n",
       "      <td>0.983456</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>65</td>\n",
       "      <td>0.813114</td>\n",
       "      <td>0.777009</td>\n",
       "      <td>0.891321</td>\n",
       "      <td>0.985747</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>66</td>\n",
       "      <td>0.814611</td>\n",
       "      <td>0.775464</td>\n",
       "      <td>0.890812</td>\n",
       "      <td>0.984729</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>67</td>\n",
       "      <td>0.812403</td>\n",
       "      <td>0.766273</td>\n",
       "      <td>0.892594</td>\n",
       "      <td>0.987020</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>68</td>\n",
       "      <td>0.817378</td>\n",
       "      <td>0.771779</td>\n",
       "      <td>0.895393</td>\n",
       "      <td>0.985747</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>69</td>\n",
       "      <td>0.806566</td>\n",
       "      <td>0.773913</td>\n",
       "      <td>0.894375</td>\n",
       "      <td>0.986765</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>70</td>\n",
       "      <td>0.813179</td>\n",
       "      <td>0.770586</td>\n",
       "      <td>0.894884</td>\n",
       "      <td>0.986002</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>71</td>\n",
       "      <td>0.805279</td>\n",
       "      <td>0.769018</td>\n",
       "      <td>0.895139</td>\n",
       "      <td>0.985492</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>72</td>\n",
       "      <td>0.806636</td>\n",
       "      <td>0.768314</td>\n",
       "      <td>0.896411</td>\n",
       "      <td>0.986002</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>73</td>\n",
       "      <td>0.805462</td>\n",
       "      <td>0.763700</td>\n",
       "      <td>0.897429</td>\n",
       "      <td>0.986002</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>74</td>\n",
       "      <td>0.803702</td>\n",
       "      <td>0.765807</td>\n",
       "      <td>0.895902</td>\n",
       "      <td>0.986256</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>75</td>\n",
       "      <td>0.798850</td>\n",
       "      <td>0.764497</td>\n",
       "      <td>0.895902</td>\n",
       "      <td>0.986256</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>76</td>\n",
       "      <td>0.814698</td>\n",
       "      <td>0.766076</td>\n",
       "      <td>0.897684</td>\n",
       "      <td>0.984474</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>77</td>\n",
       "      <td>0.801472</td>\n",
       "      <td>0.765325</td>\n",
       "      <td>0.897175</td>\n",
       "      <td>0.986256</td>\n",
       "      <td>01:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>78</td>\n",
       "      <td>0.817387</td>\n",
       "      <td>0.766522</td>\n",
       "      <td>0.897175</td>\n",
       "      <td>0.986002</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>79</td>\n",
       "      <td>0.809463</td>\n",
       "      <td>0.767573</td>\n",
       "      <td>0.895902</td>\n",
       "      <td>0.986511</td>\n",
       "      <td>01:43</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs,mixup=mixup)\n",
    "learn.fit_fc(epochs, lr, moms,0.4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn.recorder.plot_losses()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## epochs 80 results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "acc = np.array([0.900229, 0.898702, 0.893103, 0.895902])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.896984, 0.002725547376216375)"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "acc.mean(), acc.std()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
